home *** CD-ROM | disk | FTP | other *** search
-
-
-
- ssssiiiiggggttttrrrraaaapppp((((3333)))) ssssiiiiggggttttrrrraaaapppp((((3333))))
-
-
-
- NNNNAAAAMMMMEEEE
- sigtrap - Perl pragma to enable simple signal handling
-
- SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
- use sigtrap;
- use sigtrap qw(stack-trace old-interface-signals); # equivalent
- use sigtrap qw(BUS SEGV PIPE ABRT);
- use sigtrap qw(die INT QUIT);
- use sigtrap qw(die normal-signals);
- use sigtrap qw(die untrapped normal-signals);
- use sigtrap qw(die untrapped normal-signals
- stack-trace any error-signals);
- use sigtrap 'handler' => \&my_handler, 'normal-signals';
- use sigtrap qw(handler my_handler normal-signals
- stack-trace error-signals);
-
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- The ssssiiiiggggttttrrrraaaapppp pragma is a simple interface to installing signal handlers.
- You can have it install one of two handlers supplied by ssssiiiiggggttttrrrraaaapppp itself
- (one which provides a Perl stack trace and one which simply die()s), or
- alternately you can supply your own handler for it to install. It can be
- told only to install a handler for signals which are either untrapped or
- ignored. It has a couple of lists of signals to trap, plus you can
- supply your own list of signals.
-
- The arguments passed to the use statement which invokes ssssiiiiggggttttrrrraaaapppp are
- processed in order. When a signal name or the name of one of ssssiiiiggggttttrrrraaaapppp's
- signal lists is encountered a handler is immediately installed, when an
- option is encountered it affects subsequently installed handlers.
-
- OOOOPPPPTTTTIIIIOOOONNNNSSSS
- SSSSIIIIGGGGNNNNAAAALLLL HHHHAAAANNNNDDDDLLLLEEEERRRRSSSS
-
- These options affect which handler will be used for subsequently
- installed signals.
-
- ssssttttaaaacccckkkk----ttttrrrraaaacccceeee
- The handler used for subsequently installed signals outputs a Perl
- stack trace to STDERR and then tries to dump core. This is the
- default signal handler.
-
- ddddiiiieeee The handler used for subsequently installed signals calls die
- (actually croak) with a message indicating which signal was caught.
-
- hhhhaaaannnnddddlllleeeerrrr _y_o_u_r-_h_a_n_d_l_e_r
- _y_o_u_r-_h_a_n_d_l_e_r will be used as the handler for subsequently installed
- signals. _y_o_u_r-_h_a_n_d_l_e_r can be any value which is valid as an
- assignment to an element of %SIG.
-
-
-
-
-
-
- PPPPaaaaggggeeee 1111
-
-
-
-
-
-
- ssssiiiiggggttttrrrraaaapppp((((3333)))) ssssiiiiggggttttrrrraaaapppp((((3333))))
-
-
-
- SSSSIIIIGGGGNNNNAAAALLLL LLLLIIIISSSSTTTTSSSS
-
- ssssiiiiggggttttrrrraaaapppp has a few built-in lists of signals to trap. They are:
-
- nnnnoooorrrrmmmmaaaallll----ssssiiiiggggnnnnaaaallllssss
- These are the signals which a program might normally expect to
- encounter and which by default cause it to terminate. They are HUP,
- INT, PIPE and TERM.
-
- eeeerrrrrrrroooorrrr----ssssiiiiggggnnnnaaaallllssss
- These signals usually indicate a serious problem with the Perl
- interpreter or with your script. They are ABRT, BUS, EMT, FPE, ILL,
- QUIT, SEGV, SYS and TRAP.
-
- oooolllldddd----iiiinnnntttteeeerrrrffffaaaacccceeee----ssssiiiiggggnnnnaaaallllssss
- These are the signals which were trapped by default by the old
- ssssiiiiggggttttrrrraaaapppp interface, they are ABRT, BUS, EMT, FPE, ILL, PIPE, QUIT,
- SEGV, SYS, TERM, and TRAP. If no signals or signals lists are passed
- to ssssiiiiggggttttrrrraaaapppp, this list is used.
-
- For each of these three lists, the collection of signals set to be
- trapped is checked before trapping; if your architecture does not
- implement a particular signal, it will not be trapped but rather silently
- ignored.
-
- OOOOTTTTHHHHEEEERRRR
-
- uuuunnnnttttrrrraaaappppppppeeeedddd
- This token tells ssssiiiiggggttttrrrraaaapppp to install handlers only for subsequently
- listed signals which aren't already trapped or ignored.
-
- aaaannnnyyyy This token tells ssssiiiiggggttttrrrraaaapppp to install handlers for all subsequently
- listed signals. This is the default behavior.
-
- _s_i_g_n_a_l
- Any argument which looks like a signal name (that is, /^[A-Z][A-Z0-
- 9]*$/) indicates that ssssiiiiggggttttrrrraaaapppp should install a handler for that name.
-
- _n_u_m_b_e_r
- Require that at least version _n_u_m_b_e_r of ssssiiiiggggttttrrrraaaapppp is being used.
-
- EEEEXXXXAAAAMMMMPPPPLLLLEEEESSSS
- Provide a stack trace for the old-interface-signals:
-
- use sigtrap;
-
- Ditto:
-
- use sigtrap qw(stack-trace old-interface-signals);
-
- Provide a stack trace on the 4 listed signals only:
-
-
-
-
- PPPPaaaaggggeeee 2222
-
-
-
-
-
-
- ssssiiiiggggttttrrrraaaapppp((((3333)))) ssssiiiiggggttttrrrraaaapppp((((3333))))
-
-
-
- use sigtrap qw(BUS SEGV PIPE ABRT);
-
- Die on INT or QUIT:
-
- use sigtrap qw(die INT QUIT);
-
- Die on HUP, INT, PIPE or TERM:
-
- use sigtrap qw(die normal-signals);
-
- Die on HUP, INT, PIPE or TERM, except don't change the behavior for
- signals which are already trapped or ignored:
-
- use sigtrap qw(die untrapped normal-signals);
-
- Die on receipt one of an of the nnnnoooorrrrmmmmaaaallll----ssssiiiiggggnnnnaaaallllssss which is currently
- uuuunnnnttttrrrraaaappppppppeeeedddd, provide a stack trace on receipt of aaaannnnyyyy of the eeeerrrrrrrroooorrrr----ssssiiiiggggnnnnaaaallllssss:
-
- use sigtrap qw(die untrapped normal-signals
- stack-trace any error-signals);
-
- Install _m_y__h_a_n_d_l_e_r() as the handler for the nnnnoooorrrrmmmmaaaallll----ssssiiiiggggnnnnaaaallllssss:
-
- use sigtrap 'handler', \&my_handler, 'normal-signals';
-
- Install _m_y__h_a_n_d_l_e_r() as the handler for the normal-signals, provide a
- Perl stack trace on receipt of one of the error-signals:
-
- use sigtrap qw(handler my_handler normal-signals
- stack-trace error-signals);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PPPPaaaaggggeeee 3333
-
-
-
-